關聯式資料庫 (SQL) 和 非關聯式資料庫 (NoSQL) 本質上都是用來儲存資料的,並沒有互相取代的問題。根據專案和使用情境的不同,選擇合適的資料庫架構可以讓開發者節省成本,來達成每個使用者需求。
另外,SQL 的 Transaction 能夠包裹多個 SQL 敘述句,確保 Transaction 前後資料的正確性。這些特性被稱為 Atomicity, Consistency, Isolation, Durability,縮寫為 ACID (化學領域中是指某某酸,例如 hydrochloric acid, 氫氯酸 aka 鹽酸)。
若要回傳以下的 JSON 資料,採用 NoSQL 可以直接以這樣的方式儲存單一商品資訊,或將 successfulOrders 的值放置到另一台 Server 中,等使用者呼叫時再重新組合回傳也是可以的。
{
id:12,
title:"Product12",
comments:[
{id:3,message:"That's great!"},
{id:6,message:"That's awesome!"}
],
successfulOrders:35
}
哪一種效能比較快?
普遍的說法為 NoSQL,因為 NoSQL 並不需要透過額外的 JOIN 或複雜的 SQL 敘述句才能取得所有相關資訊,但最關鍵的還是最一開始的資料庫設計階段,能否真實滿足使用者需求。因此,這題我自己是覺得沒有標準答案。
NoSQL 有類似 SQL 的 Transaction 嘛?
在更新單一 document 內裡頭的值,是可以確保一起被改變或是一起失敗的。不過在多個 documents 間的溝通上,並沒有預設這樣的機制。
SQL 和 NoSQL 哪一個比較夯?
以當紅熱門的 NoSQL - MongoDB 和 MySQL 來做對比,由 Google Trend 可以一窺究竟:
所以回到標題,我到底該選哪一個?